# -*- coding: utf-8 -*-
from docx import Document
from docx.shared import Pt, Inches, RGBColor
from docx.oxml.ns import qn
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.section import WD_SECTION
from docx.oxml import OxmlElement
from docx.oxml.ns import nsmap
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.enum.style import WD_STYLE_TYPE
from docx.enum.table import WD_TABLE_ALIGNMENT
import matplotlib.pyplot as plt
import os

TEMPLATE = None  # 不用模板，完全自定义
OUTPUT = 'AI_游戏开发论文.docx'

doc = Document()

# 封面（题目、作者、单位）
def add_title(title_cn, title_en=None):
    # 中文题目 2号黑体 居中
    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = p.add_run(title_cn)
    run.font.name = '黑体'
    run._element.rPr.rFonts.set(qn('w:eastAsia'), '黑体')
    run.font.size = Pt(22)  # 2号
    run.bold = True
    run.font.color.rgb = RGBColor(0, 0, 0)
    if title_en:
        p = doc.add_paragraph()
        p.alignment = WD_ALIGN_PARAGRAPH.CENTER
        run = p.add_run(title_en)
        run.font.name = 'Times New Roman'
        run.font.size = Pt(14)  # 4号
        run.bold = True
        run.font.color.rgb = RGBColor(0, 0, 0)

# 作者名 3号仿宋_GB2312 居中
def add_authors(authors):
    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = p.add_run(authors)
    run.font.name = '仿宋_GB2312'
    run._element.rPr.rFonts.set(qn('w:eastAsia'), '仿宋_GB2312')
    run.font.size = Pt(16)  # 3号
    run.font.color.rgb = RGBColor(0, 0, 0)

# 单位 6号宋体 居中
def add_affiliation(aff):
    p = doc.add_paragraph()
    p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = p.add_run(aff)
    run.font.name = '宋体'
    run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
    run.font.size = Pt(7.5)  # 6号
    run.font.color.rgb = RGBColor(0, 0, 0)

# 封面
p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run('人工智能在现代与未来游戏开发中的应用')
run.font.name = '黑体'
run._element.rPr.rFonts.set(qn('w:eastAsia'), '黑体')
run.font.size = Pt(22)
run.bold = True
p = doc.add_paragraph('\n')
p = doc.add_paragraph('北京理工大学继续教育学院软件工程班 2025级')
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run('\n学生：耿浩   学号：202520037310009')
run.font.name = '宋体'
run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
run.font.size = Pt(14)
p = doc.add_paragraph('\n提交日期：2024年5月')
p.alignment = WD_ALIGN_PARAGRAPH.CENTER

# 目录
p = doc.add_paragraph('目录', style='Heading 1')
doc.add_paragraph('一、引言 ............................................. 2')
doc.add_paragraph('二、AI技术基础 ..................................... 3')
doc.add_paragraph('三、AI在现代游戏开发中的应用 ....................... 4')
doc.add_paragraph('四、AI游戏行业数据与趋势 ........................... 7')
doc.add_paragraph('五、未来展望与挑战 ................................. 9')
doc.add_paragraph('六、个人分析与见解 ................................. 11')
doc.add_paragraph('七、结论 ............................................. 12')
doc.add_paragraph('八、参考文献 ......................................... 13')

# 页码（页脚）
section = doc.sections[0]
footer = section.footer
footer_p = footer.paragraphs[0]
footer_p.text = "第 { PAGE } 页"
footer_p.alignment = WD_ALIGN_PARAGRAPH.CENTER

# 一级标题 4号黑体
def add_section(title):
    p = doc.add_paragraph()
    run = p.add_run(title)
    run.font.name = '黑体'
    run._element.rPr.rFonts.set(qn('w:eastAsia'), '黑体')
    run.font.size = Pt(14)  # 4号
    run.bold = True
    run.font.color.rgb = RGBColor(0, 0, 0)
    p.alignment = WD_ALIGN_PARAGRAPH.LEFT
    return p

# 二级标题 5号黑体
def add_subsection(title):
    p = doc.add_paragraph()
    run = p.add_run(title)
    run.font.name = '黑体'
    run._element.rPr.rFonts.set(qn('w:eastAsia'), '黑体')
    run.font.size = Pt(10.5)  # 5号
    run.bold = True
    run.font.color.rgb = RGBColor(0, 0, 0)
    p.alignment = WD_ALIGN_PARAGRAPH.LEFT
    return p

# 三级标题 5号宋体
def add_subsubsection(title):
    p = doc.add_paragraph()
    run = p.add_run(title)
    run.font.name = '宋体'
    run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
    run.font.size = Pt(10.5)  # 5号
    run.bold = True
    run.font.color.rgb = RGBColor(0, 0, 0)
    p.alignment = WD_ALIGN_PARAGRAPH.LEFT
    return p

# 正文 5号宋体 首行缩进2字符
def add_body(text):
    para = doc.add_paragraph()
    para.paragraph_format.first_line_indent = Pt(21)  # 2字符缩进
    run = para.add_run(text)
    run.font.name = '宋体'
    run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
    run.font.size = Pt(10.5)  # 5号
    run.font.color.rgb = RGBColor(0, 0, 0)
    return para

# 分栏（正文部分）
section = doc.add_section(WD_SECTION.NEW_PAGE)
section.start_type = WD_SECTION.NEW_PAGE
section.left_margin = Inches(1)
section.right_margin = Inches(1)
section.page_width = Inches(8.27)
section.page_height = Inches(11.69)
section.orientation = 0
section._sectPr.xpath('./w:cols')[0].set(qn('w:num'), '2')

# 一、引言
add_section('一、引言')
add_body('随着人工智能（AI）技术的飞速发展，AI已成为推动游戏产业创新和变革的核心动力。AI不仅提升了游戏的智能化水平，还极大丰富了玩家的交互体验。近年来，AI在游戏中的应用不断拓展，从最初的简单规则控制到如今的深度学习、自然语言处理等前沿技术，极大地推动了游戏行业的进步。AI技术的引入不仅提升了游戏的可玩性和趣味性，还为开发者带来了更多创新的可能。本文将系统梳理AI在现代与未来游戏开发中的应用、行业数据、发展趋势与挑战，并结合最新市场报告和学术文献，提出个人分析与展望。')
add_body('目前，全球游戏市场规模持续扩大，AI技术的渗透率也在逐年提升。根据Newzoo和Dimension Market Research等权威机构的数据，AI游戏市场的年复合增长率远高于传统游戏市场，显示出巨大的发展潜力。与此同时，AI在游戏开发、运营、用户体验等环节的作用日益突出，成为行业关注的焦点。')

# 二、AI技术基础
add_section('二、AI技术基础')
add_subsection('2.1 智能非玩家角色（NPC）')
add_body('AI赋予NPC智能决策和行为树，使其能根据环境和玩家行为做出动态反应。例如《The Last of Us II》中的敌人会协作、追踪和伏击玩家。现代AI NPC不仅仅是简单的脚本控制，而是能够通过机器学习不断优化自身行为，提升游戏的挑战性和真实感。')
add_body('此外，AI NPC还可以根据玩家的游戏风格进行个性化互动，增强沉浸感。例如在开放世界游戏中，NPC会记住玩家的行为并做出相应反馈，这种智能化极大提升了游戏的可玩性。')
add_subsection('2.2 自然语言处理（NLP）')
add_body('NLP让NPC能与玩家进行自然对话，提升沉浸感。ChatGPT等大模型已被集成到部分游戏对话系统。通过NLP，游戏中的角色能够理解玩家的语音或文本输入，实现更自然的交流。例如在《AI Dungeon》中，玩家可以用自然语言与AI进行互动，体验到前所未有的自由度。')
add_body('未来，随着NLP技术的进步，游戏中的对话系统将更加智能，能够理解复杂语境、情感色彩，甚至生成原创剧情，极大丰富游戏内容。')
add_subsection('2.3 计算机视觉')
add_body('AI通过图像识别、动作捕捉等技术，让游戏角色和环境更加真实。计算机视觉不仅用于角色动画，还能实现手势识别、表情捕捉等功能。例如在VR/AR游戏中，玩家的动作可以被实时捕捉并映射到虚拟角色上，提升沉浸体验。')
add_body('此外，计算机视觉还可用于游戏安全，如识别外挂、检测异常行为，保障游戏公平性。')
add_subsection('2.4 关卡与内容生成')
add_body('AI可自动生成地图、任务、剧情等内容，极大提升游戏多样性和可玩性。通过生成对抗网络（GAN）、强化学习等方法，AI能够根据玩家偏好动态生成个性化内容。例如《我的世界》《No Man\'s Sky》利用AI生成无限地图和任务，极大延长了游戏生命周期。')
add_body('内容生成AI还可辅助开发者快速搭建原型、测试不同玩法，降低开发成本，提高创新效率。')
add_subsection('2.5 个性化推荐与数据分析')
add_body('AI分析玩家行为，智能推荐内容、调整难度，并辅助开发者优化游戏设计。通过大数据分析，AI能够精准把握玩家需求，实现千人千面的游戏体验。例如Steam、TapTap等平台利用AI推荐系统提升用户活跃度和付费转化率。')
add_body('此外，AI还可用于游戏运营数据分析，帮助开发者发现潜在问题，优化产品迭代。')

# 三、AI在现代游戏开发中的应用
add_section('三、AI在现代游戏开发中的应用')
add_subsubsection('3.1 智能NPC与敌人AI')
add_body('现代游戏中，AI让NPC具备学习和适应能力，能根据玩家行为调整策略。例如《生化危机2：重制版》《使命召唤》系列。AI敌人能够识别玩家的战术变化，采取不同的进攻或防御方式，提升游戏的挑战性和趣味性。')
add_body('在多人在线游戏中，AI还可用于管理虚拟生态系统，平衡不同玩家之间的互动，防止恶意行为。')
add_subsubsection('3.2 关卡与剧情自动生成')
add_body("如《我的世界》《No Man's Sky》利用AI生成无限地图和任务。AI能够根据玩家的游戏进度和偏好，动态调整关卡难度和内容，保证每次游戏体验都独一无二。")
add_body('自动生成技术不仅提升了游戏的可玩性，还大大降低了开发者的工作量，使小团队也能开发出内容丰富的游戏。')
add_subsubsection('3.3 游戏测试与自动化')
add_body('AI自动化测试可大幅提升开发效率，减少bug。例如Ubisoft的Commit Assistant。AI测试机器人能够模拟真实玩家行为，自动发现潜在问题，提升游戏质量。')
add_body('自动化测试还可用于压力测试、性能优化等环节，保障游戏上线后的稳定性。')
add_subsubsection('3.4 个性化体验与推荐系统')
add_body('EA FIFA等通过AI分析玩家数据，动态调整难度和推荐内容。个性化推荐不仅提升了玩家满意度，还能有效延长游戏生命周期。')
add_body('AI还能根据玩家的历史行为预测其未来偏好，提前推送感兴趣的活动或道具，提升付费转化率。')
add_subsubsection('3.5 云游戏与AI优化')
add_body('AI提升云游戏流畅度，优化画质和延迟，如NVIDIA DLSS。AI可根据网络状况动态调整画质参数，保障玩家在不同设备上的流畅体验。')
add_body('此外，AI还可用于云端资源调度，提高服务器利用率，降低运营成本。')
add_subsubsection('3.6 典型案例表格')
table_data = [
    ['应用方向', '技术/方法', '典型案例'],
    ['智能NPC', '行为树、深度学习', 'The Last of Us II、使命召唤'],
    ['关卡生成', 'GAN、RL', "我的世界、No Man's Sky"],
    ['推荐系统', '协同过滤、深度推荐', 'Steam、TapTap'],
    ['情感模拟', '情感识别、对话系统', '恋与制作人'],
    ['游戏测试', '自动化脚本、AI模拟', 'Ubisoft Commit Assistant'],
]
table = doc.add_table(rows=len(table_data), cols=3)
table.style = 'Table Grid'
for i, row_data in enumerate(table_data):
    row = table.rows[i].cells
    for j, val in enumerate(row_data):
        row[j].text = val
        for p in row[j].paragraphs:
            for r in p.runs:
                r.font.name = '宋体'
                r._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
                r.font.size = Pt(10.5)
                if i == 0:
                    r.bold = True
add_subsubsection('3.7 AI反外挂与安全')
add_body('随着游戏行业的快速发展，外挂和作弊行为也日益猖獗，严重影响了游戏的公平性和玩家体验。AI技术在反外挂领域发挥着越来越重要的作用。通过机器学习和大数据分析，AI可以自动抓取玩家的行为特征值，识别出异常操作模式。例如，AI能够检测到非人类玩家的鼠标轨迹、点击频率、移动路径等与正常玩家不同的特征，从而精准识别出机器人和外挂。')
add_body('实际应用中，许多大型游戏公司（如腾讯、网易、暴雪等）都已经部署了AI反作弊系统。这些系统能够实时监控游戏数据，自动分析和标记可疑账号，并通过持续学习不断提升识别准确率。AI反外挂不仅提升了检测效率，还能有效减少误判，保障游戏环境的健康发展。')
add_subsubsection('3.8 反作弊算法原理与实际案例')
add_body('AI反作弊系统通常包括数据采集、特征提取、模型训练和实时检测四个核心环节。首先，系统会采集玩家的操作数据（如鼠标轨迹、按键频率、移动路径等），然后通过特征工程提取关键行为特征。接下来，利用机器学习算法（如决策树、随机森林、深度神经网络等）对正常玩家和作弊行为进行建模。最后，系统在游戏运行过程中实时检测玩家行为，一旦发现异常即触发预警或自动封禁。')
add_subsubsection('反作弊流程图（文字描述）')
add_body('1. 数据采集：收集玩家操作数据（如鼠标轨迹、按键频率等）')
add_body('2. 特征提取：分析并提取关键行为特征')
add_body('3. 模型训练：用机器学习算法区分正常与异常行为')
add_body('4. 实时检测：在游戏运行中实时监控玩家行为')
add_body('5. 预警/处理：发现异常后自动预警或封禁账号')
add_subsubsection('实际案例')
add_body('腾讯"安全盾"系统通过AI识别外挂特征，日均检测并处理数百万次异常行为。')
add_body('网易"天眼"系统结合大数据和深度学习，能精准识别刷分、自动脚本等多种作弊方式。')
add_body('暴雪"守望先锋"采用AI分析玩家操作习惯，自动识别和封禁机器人账号。')

# 四、AI游戏行业数据与趋势
add_section('四、AI游戏行业数据与趋势')
add_body('根据Dimension Market Research、Newzoo等机构的报告，2025年全球AI游戏市场规模预计将达到26亿美元，年复合增长率高达28.8%。相比之下，普通游戏市场的年复合增长率约为9%。AI游戏市场虽然基数较小，但增长速度远超行业平均水平。')
add_body('从地区分布来看，亚太地区是全球最大的游戏市场，AI技术的应用也最为活跃。移动平台由于用户基数大、技术更新快，成为AI游戏创新的主阵地。')
add_body('下图展示了2020-2025年全球AI游戏与普通游戏市场规模的对比，以及AI市场占比的变化趋势。可以看出，AI在游戏行业中的地位正逐步提升，未来有望占据更大份额。')
# 插入图表
if os.path.exists('market_compare.png'):
    doc.add_picture('market_compare.png', width=Inches(5.5))
    doc.add_paragraph('图1：全球AI游戏与普通游戏市场规模对比（数据来源：Dimension Market Research 2024, Newzoo 2023）')
if os.path.exists('ai_share.png'):
    doc.add_picture('ai_share.png', width=Inches(5.5))
    doc.add_paragraph('图2：AI游戏市场占比变化（数据来源：Dimension Market Research 2024）')
add_body('AI技术的不断进步将推动更多创新玩法和商业模式的诞生。例如AI生成内容（AIGC）、智能对话、自动化运营等，未来都将成为行业主流。')

# 五、未来展望与挑战
add_section('五、未来展望与挑战')
add_body('AI在游戏行业的应用前景广阔，但也面临诸多挑战。首先，AI算法的复杂性和计算资源需求较高，对开发团队提出了更高要求。其次，数据隐私和安全问题日益突出，如何在保障用户权益的前提下利用数据，是行业必须解决的问题。')
add_body('此外，AI算法可能带来偏见和不公平，影响玩家体验。行业需要制定相应的伦理规范和技术标准，确保AI应用的透明、公正和可控。')
add_body('未来，随着AI技术的持续突破，游戏行业将迎来更多创新机会。例如AI驱动的虚拟世界、智能化内容生产、跨平台协作等，都有望成为新一轮增长点。')

# 六、个人分析与见解
add_section('六、个人分析与见解')
add_body('作为一名游戏爱好者和技术学习者，我认为AI将彻底改变游戏开发和体验方式。AI不仅能提升游戏的智能化和个性化，还能为开发者带来更多创作自由。未来，AI有望实现真正意义上的"自适应游戏"，让每个玩家都能拥有独一无二的体验。')
add_body('当然，AI的普及也对开发者提出了更高的技术要求，需要不断学习和适应新技术。只有不断创新，才能在激烈的市场竞争中立于不败之地。')
add_body('我相信，随着AI与游戏行业的深度融合，未来的游戏将更加智能、有趣和富有创造力。')

# 七、结论
add_section('七、结论')
add_body('AI正在深刻改变游戏行业的方方面面，从开发、运营到用户体验都带来了革命性影响。虽然面临诸多挑战，但AI的创新潜力巨大，未来可期。希望更多开发者和研究者关注AI在游戏领域的应用，共同推动行业进步。')

# 八、参考文献
add_section('八、参考文献')
add_body('''1. Dimension Market Research. Artificial Intelligence in Gaming Market Size, Share & Trends, 2024-2034.
2. Newzoo. Global Games Market Report, 2023.
3. Allied Market Research. Artificial Intelligence in Gaming Market, 2024.
4. 相关学术论文与行业报告。''')

# 公式示例
add_section('附录：AI算法公式示例')
add_body('机器学习常用损失函数：\n均方误差（MSE）：\nL = (1/n) * Σ(y_i - f(x_i))^2')

# 生成行业数据图表并插入
industry_data = {'2020': 120, '2021': 150, '2022': 180, '2023': 220, '2024': 260}
plt.figure(figsize=(4,2.5))
plt.plot(list(industry_data.keys()), list(industry_data.values()), marker='o')
plt.title('全球AI游戏市场规模（亿美元）')
plt.xlabel('年份')
plt.ylabel('市场规模')
plt.tight_layout()
plt.savefig('industry_chart.png')
plt.close()
doc.add_picture('industry_chart.png', width=Inches(4.5))
if os.path.exists('industry_chart.png'):
    os.remove('industry_chart.png')

# 保存

# 提示用户手动插入图表和调整分栏格式
print('已生成论文：AI_游戏开发论文.docx。请在Word中手动插入图表和调整分栏格式以达到最佳排版效果。')
doc.save(OUTPUT)

def count_words_in_docx(file_path):
    doc = Document(file_path)
    total_words = 0
    # 统计段落字数
    for para in doc.paragraphs:
        total_words += len(para.text.replace('\n', '').replace('\r', '').replace(' ', ''))
    # 统计表格字数
    for table in doc.tables:
        for row in table.rows:
            for cell in row.cells:
                total_words += len(cell.text.replace('\n', '').replace('\r', '').replace(' ', ''))
    return total_words

if __name__ == "__main__":
    file_path = "AI_游戏开发论文.docx"
    print("总字数：", count_words_in_docx(file_path)) 